sed コマンド
あまり使う機会はないが,使うときはものすごく使う.xargsとかシェルスクリプトで複数ファイルに同じ処理をしたいときに使う.1ファイルぐらいならエディタで置換した方が多分便利. 基本の使い方
$ sed textfile.txt -e 'script' > output.txt
script 内に処理を書く.
-e オプションを繋げて続けて処理ができる
-f オプションを使うと別ファイルに書いたスクリプトを実行できる
-i オプションで処理対象ファイルに上書き
置換
基本的な使い方
/置換行パターン/s/検索パターン/置換文字列/置換オプション
例
$ sed hoge.txt -e 's/poi/poipoi/g'
hoge.txt 内の行中の全ての文字列 poi を poipoi に置換する
$ sed hoge.txt -e '/^#/s/poi/poipoi/1'
hoge.txt 内の行頭が#で始まる行の1番目(明示)に出てくる文字列poiをpoipoiに置換する
$ sed hoge.txt -e '/^#/s/poi/poipoi/'
hoge.txt 内の行頭が#で始まる行の1番目に出てくる文字列poiをpoipoiに置換する
コピー
piyo が含まれる行をコピー(h)して,ペースト(G,このときhに改行が含まれている)して,その改行コード(\n)を削除
code:bash
echo piyohogehuga | sed -e '/piyo/h;G'
piyohogehuga
piyohogehuga
echo piyohogehuga | sed -e '/piyo/h;G;s/\n//'
piyohogehugapiyohogehuga
echo piyohogehuga | sed -e '/piyo/h;G;s/\n/ /'
piyohogehuga piyohogehuga
echo piyohogehuga | sed -e '/piyo/h;G;G;s/\n/ /'
piyohogehuga piyohogehuga
piyohogehuga
echo piyohogehuga | sed -e '/piyo/h;G;G;s/\n/ /g'
piyohogehuga piyohogehuga piyohogehuga
削除
$ sed hoge.txt -e '1,8d'
1~8行目を削除
$ sed hoge.txt -e '/^#/d'
シェルスクリプトのコメント文の削除
挿入
$ sed hoge.c -i -e '1/i #include <stdio.h>' 1行目に挿入(上書き保存)